import org.w3c.dom.ls.LSOutput;

class S<T> {

}
class Message<T> {
    private T message ;
    public T getMessage() {
        return message;
    }
    public void setMessage(T message) {
        this.message = message;
    }
}
public class GenericsExtends {
    public static void main1(String[] args) {
        //<>当中的数据类型 不参与类型的组成 jvm当中没有泛型的概念  泛型中存在的与编译阶段
        S<String> s1 = new S<>();
        System.out.println(s1);
        S<Integer> s2 = new S<>();
        System.out.println(s2);
    }

    public static void main2(String[] args) {
        //通配符
        Message<String> message1 = new Message<>();
        message1.setMessage("ha");
        func(message1);
        Message<Integer> message2 = new Message<>();
        message2.setMessage(115);
        func(message2);
    }
    public static void func(Message<?> msg) {          //使用通配符接受所有类型的参数,但是此时的msg就不知道是什么类型的了
        //msg.setMessage(12);                            //此时类型不确定无法修改
        System.out.println(msg.getMessage());
    }
}
